package qc.module.ehs.mapper;

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
import qc.common.core.enums.EhsHazardCategoryTypeEnum;
import qc.module.ehs.dto.templatehazard.TplHazardCategoryDto;
import qc.module.ehs.entity.EhsTplHazardcategory;

import java.util.List;

/**
 * EhsTplHazardcategoryMapper
 *
 * @author QuCheng Tech
 * @create 2024/5/22
 */
@Mapper
public interface EhsTplHazardcategoryMapper {
    EhsTplHazardcategoryMapper MAPPER = Mappers.getMapper(EhsTplHazardcategoryMapper.class);

    //@Mapping(target = "tags", source = "tags.index")
    TplHazardCategoryDto toDto(EhsTplHazardcategory en);

    //@Mapping(target = "tags", ignore = true)
    EhsTplHazardcategory toEntity(TplHazardCategoryDto dto);

    List<TplHazardCategoryDto> toDtoList(List<EhsTplHazardcategory> ens);

    /**
     * 新增修改DTO转换为Entity，特殊处理
     *
     * @param dto 新增DTO
     * @return Entity
     * @author QuCheng Tech
     * @since 2024/5/23
     */
    //default EhsTplHazardcategory dtoToEntity(TplHazardCategoryDto dto) {
    //    EhsTplHazardcategory en = EhsTplHazardcategoryMapper.MAPPER.toEntity(dto);
    //
    //    //处理组织类型，非空时进行转换，空值时使用默认
    //    Integer tags = null;
    //    if (dto.getTags() != null && dto.getTags() > 0x0) {
    //        try {
    //            tags = dto.getTags();
    //        } catch (NumberFormatException exception) {
    //            //转换错误不处理，使用默认状态
    //        }
    //    }
    //    en.setTags(getEhsHazardCategoryTypeEnum(tags));
    //
    //    return en;
    //}

    /**
     * 根据枚举key获取枚举对象
     *
     * @param index
     * @return
     */
    //static EhsHazardCategoryTypeEnum getEhsHazardCategoryTypeEnum(Integer index) {
    //    if (index != null && index > 0x0) {
    //        for (EhsHazardCategoryTypeEnum item : EhsHazardCategoryTypeEnum.values()) {
    //            if (item.getIndex() == index) {//判断序号使用getIndex，判断内容使用getName
    //                return item;
    //            }
    //        }
    //    }
    //    return EhsHazardCategoryTypeEnum.STRUCTURES;
    //}
}
